﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using TccServicos.Models;
using TccServicos.Util;

namespace TccServicos.Controllers
{
    public class ComboCidadeController : ApiController
    {
        #region Atributos
        private string sThread = "";
        #endregion

        #region WebApis do TCC Combo Cidade
        [HttpGet]
        public RetornoComboCidade GetComboCidade([FromUri] int? idUf = null, [FromUri] string cidade = null, [FromUri] int? registros = 0)
        {
            sThread = Util.Util.NextHex(4);
            string nomeFuncao = string.Format("{0} [{1}]", "GetComboCidade", sThread);

            try
            {
                using (adoteEntities contexto = new adoteEntities())
                {
                    var idUfPesquisa = idUf.HasValue ? idUf.Value : 0;
                    var consultaCidade = (from t in contexto.CADASTRO_CIDADE.AsNoTracking()
                                          where t.ID_UF == idUfPesquisa
                                          select new ComboCidade
                                          {
                                              id = t.ID_CIDADE,
                                              cidade = t.CIDADE,
                                          });

                    if (!string.IsNullOrWhiteSpace(cidade))
                        consultaCidade = consultaCidade.Where(x => x.cidade.ToLower().StartsWith(cidade.ToLower()));
                    if (registros.HasValue && registros.Value > 0)
                        consultaCidade = consultaCidade.Take(registros.Value);
                    var resultado = consultaCidade.OrderBy(x => x.cidade).ToList();

                    Log.GravarLog(string.Format("{0}: {1}", nomeFuncao, Validacao.consultaComSucesso));

                    return new RetornoComboCidade() { lista = resultado };
                }
            }
            catch (Exception ex)
            {
                Log.GravarLog(string.Format("{0} Erro: {1}", nomeFuncao, ex.ToString()));
                return default(RetornoComboCidade);
            }
        }
        #endregion
    }
}
